package office.service.person;

import java.util.List;
import office.action.person.form.LeaveRequestForm;
import office.action.person.form.TripForm;
import office.action.person.vo.PersonLogVo;
import office.action.person.vo.StatisticsVo;
import office.bo.hr.impl.Timing;
import office.bo.person.LeaderInstructions;
import office.bo.person.LeaveRequest;
import office.bo.person.OverTime;
import office.bo.person.PersonLog;
import office.bo.person.Plan;
import office.bo.person.PlanTemplate;
import office.bo.person.Table;
import office.bo.person.Trip;
import platform.common.bo.Page;
import platform.common.exception.BusinessException;

public interface IPersonService {
	/**
	 * 
	 * @param personLog
	 */
	public void saveOverTime(OverTime overTime) ;
	/**
	 * 
	 * @param leaderInstructions
	 */
	public void saveLeaderInstructions(LeaderInstructions leaderInstructions);
	/**
	 * 
	 * @param personLog
	 */
	public void saveTrip(Trip trip) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public void changeTripStatus(Trip trip) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public void savePersonPlan(Plan plan) ;
	/**
	 * 
	 * @param personLog
	 */
	public void savePersonLog(PersonLog personLog);
	/**
	 * 
	 * @param personLog
	 */
	public void savePlanTemplate(PlanTemplate planTemplate);
	/**
	 * 
	 * @param personLog
	 */
	public void saveLeaveRequest(LeaveRequest leaveRequest) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public void saveTiming(Timing timing);
	/**
	 * 
	 * @param personLog
	 */
	public void saveTable(Table table);
	/**
	 * 
	 * @param personLog
	 */
	public void deletePersonLogById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public void deleteLeaveById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public void deleteOverTimeById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public void deleteById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public void deleteTableById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public void deleteTimingByTripAndDate(String tripId,String thisDate);
	/**
	 * 
	 * @param personLog
	 */
	public void overTimeProcess(String id,Integer status) throws BusinessException;
	
	
	/**
	 * 
	 * @param personLog
	 */
	public PersonLog getPersonLogById(String id);
	/**
	 * 
	 * @param personLog
	 */
	public LeaveRequest getLeaveById(String id)throws BusinessException;
	/**
	 * 根据id获取对象
	 * @param id
	 * @return
	 * @throws BusinessException
	 */
	public LeaveRequestForm getLeaveRequestById(String id)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public Plan getPlanById(String id)throws BusinessException;
	/**
	 * @param id
	 * @return
	 * @throws BusinessException
	 */
	public Timing getTimingById(String id) throws BusinessException ;
	/**
	 * @param personLog
	 */
	public Timing getTimingByDateAndType(String uid,String date,String clockType)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public Trip getTripById(String id)throws BusinessException;
	
	/**
	 * 
	 * @param personLog
	 */
	public List<TripForm> validateTrip(String uid,String beginDate)throws BusinessException;
	/**
	 * 根据id获取对象
	 * @param id
	 * @return
	 * @throws BusinessException
	 */
	public TripForm getTripFormById(String id)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public Trip getTripByUidAndDate(String userId);
	/**
	 * 
	 * @param personLog
	 */
	public OverTime getOverTimeById(String id)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public Table getTableById(String id) throws BusinessException;
	
	
	
	
	/**
	 * 
	 * @param personLog
	 */
	public List<PersonLog> getPersonLogByUid(String uid);
	
	/**
	 * 
	 * @param personLog
	 */
	public List<PersonLog> getPersonLogByUidAndDate(Page page ,String uid,Integer logDay);
	
	/**
	 * 
	 * @param personLog
	 */
	public Page getPersonLogTotalPage(PersonLogVo personLogVo,Integer logDay);
	
	/**
	 * 
	 * @param personLog
	 */
	public List<LeaveRequest> getLeaveRequestForSum(Integer year,Integer month,Integer status) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public List<Trip> getTripForSum(Integer year,Integer month,Integer status) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public List<OverTime> getOverTimeForSum(Integer year,Integer month,Integer status) throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public List<Timing> getTimingByTrip(String id)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public List<Timing> getAllTimingByUid(String uid,String beginDate,String endDate)throws BusinessException;
	/**
	 * 
	 * @param personLog
	 */
	public List<Timing> getAllTimingByDate(String beginDate,String endDate)throws BusinessException;
	/**
	 * 
	 * @param planId
	 * @return
	 */
	public List<LeaderInstructions> getLeaderInstructionsByPlanId(String planId);
	/**
	 * 
	 * @param planId
	 * @return
	 */
	public List<LeaderInstructions> getNoReadLeaderInstructionsList(String planId,String isRead);
	
	/**
	 * 
	 * @param personLog
	 */
	public List<OverTime> getOverTimeByUid(String userId);
	/**
	 * 
	 * @param personLog
	 */
	public List<OverTime> getOverTimeByProcessUid(String processUid,Integer status);
	
	/**
	 * 
	 * @param personLog
	 */
	public List<Plan> getPlanByUidAndYear(String userId,Integer makeYear);
	/**
	 * 
	 * @param personLog
	 */
	public List<PlanTemplate> getPlanTemplateByUidAndYear(Integer makeYear);
	/**
	 * 
	 * @param personLog
	 */
	public List<Table> getTableByUser(String userId,String month);
	/**
	 * 
	 * @param personLog
	 */
	public List<Table> getAllTableByDate(String userId,String beginDate,String endDate);
	/**
	 * 获取请假数据列表
	 * @param form
	 * @return
	 * @throws BusinessException
	 */
	public List<LeaveRequestForm> getListLeaveRequest(LeaveRequestForm form) throws BusinessException;
	
	/**
	 * 获取出差数据列表
	 * @param form
	 * @return
	 * @throws BusinessException
	 */
	public List<TripForm> getListTrip(TripForm form) throws BusinessException;
	
	/**
	 * 获取出差数据列表,全部列表，总经理看
	 * @param form
	 * @return
	 * @throws BusinessException
	 */
	public List<TripForm> getAllTrip(Integer year,Integer month, Integer bstate,Integer lstate) throws BusinessException;
	
	/**
	 * 获取出差数据列表
	 * @param form
	 * @return
	 * @throws BusinessException
	 */
	public List<TripForm> getListTripForFinance(TripForm form) throws BusinessException;
	
	
	public List<StatisticsVo> getHrSum(Integer year,Integer month,String type) throws BusinessException;
}
